#include<iostream>
#include<sys/types.h>
#include<string>
#include<sys/socket.h>
#include"TcpServer.hpp"
#include"ServerCal.hpp"

// int main()
// {


//     return 0;
// }

void Usage(std::string proc)
{
    std::cout<<"Usage# "<<proc<<" [port+]"<<std::endl;
}


int main(int argc,char*argv[])
{
    if(argc!=2)
    {
        Usage(argv[0]);
        exit(1);
    }
    std::cout<<argv[1]<<std::endl;
    uint16_t port=std::stoi(argv[1]);
    std::cout<<port<<std::endl;
    ServerCal cal;
    // c++11 ??
     TcpServer*ts=new TcpServer(port,std::bind(&ServerCal::Calculator,&cal,std::placeholders::_1));
    ts->TcpInit();
    ts->Start();
    
    // Response res(100,0);
    // std::string content;
    // res.Serialization(&content);
    // std::cout<<content<<std::endl;
    // std::string package=Encode(content);
    // std::cout<<package;
    // content="";
    // bool r=Decode(package,&content);
    // std::cout<<content<<std::endl;

    // Response temp;
    // temp.Deserialization(content);
    // std::cout<<temp.result_<<std::endl;
    // std::cout<<temp.code_<<std::endl;

    // Request req(111111,222222,'+');
    // std::string s;
    // req.Serialization(&s);
    // // std::cout<<s<<std::endl;
    // s=Encode(s);
    // std::cout<<s<<std::endl;
    
    // std::string content;
    // bool r=Decode(s,&content);
    // std::cout<<content<<std::endl;
    
    // Request temp;
    // temp.Deserialization(content);
    // std::cout<<temp.x<<std::endl;
    // std::cout<<temp.oper<<std::endl;
    // std::cout<<temp.y<<std::endl;

    



    return 0;
}